/**
 * author: zhou
 * date: 2017.10.18
 * description: 用户模型
 * {
 *      username: 用户账号
 *      password: 用户密码
 *      name: 用户真实姓名
 *      sex: 用户性别 1 男 2 女
 *      children: 孩子信息 如果用户角色为家长,则需要关联孩子信息
 *      type: 类型 type: 1 超级管理员; 2 学校管理员,学校用户(校长,班主任,教师等); 3 家长
 *      schoolId: 学校id,关联学校信息
 *      status: 状态字段 1: 正常 2: 禁用 3: 删除
 *      isSchoolManager: 是否是学校管理员
 *      role: 角色id
 *      loginCount: 登录次数
 *      isLogin: 当前是否是登录状态
 *      ip: ip地址
 *      lastLoginTime: 最近一次登录时间
 *      lastLogoutTime: 最后一次退出登录时间,
 *      client: 登录客户端
 * }
 */

// 用户分为超级管理员,学校管理员,学校用户(校长,班主任,教师等),家长
// 以type区分用户类型
// type: 1 超级管理员
// type: 2 学校管理员,学校用户(校长,班主任,教师等)
// type: 3 家长

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
    username: { type: String, unique: true, required: true },
    password: { type: String, required: true },
    name: { type: String, required: true },
    sex: { type: Number, default: 1 },
    children: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Student' }],
    schoolId: { type: mongoose.Schema.Types.ObjectId, ref: 'School' },
    gradeIds: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Grade' }],
    classIds: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Class' }],
    subjectIds: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Subject' }],
    type: Number,
    status: { type: Number, default: 1 },
    isSchoolManager: { type: Boolean, default: false },
    roleId: { type: mongoose.Schema.Types.ObjectId, ref: 'Role' },
    loginCount: { type: Number, default: 0 },
    isLogin: { type: Boolean, default: false },
    ip: String,
    lastLoginTime: Date,
    lastLogoutTime: Date,
    client: String,
    createDate: { type: Date, default: Date.now }
});

module.exports = mongoose.model('User', userSchema, 'managements.settings.users');